package com.kk.license.starter;


import com.kk.license.common.bean.LicenseVerifyParam;
import com.kk.license.common.LicenseVerify;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;


/**
 * @author wangkang
 * @version 1.0
 * @description 在项目启动时安装证书
 * @create 2023-07-17 10:17
 */
@Component
@Slf4j
public class LicenseCheckListener implements ApplicationRunner {

    /**
     * 证书subject
     */
    @Value("${license.subject}")
    private String subject = "license";

    /**
     * 公钥别称
     */
    @Value("${license.publicAlias}")
    private String publicAlias = "publicCert";

    /**
     * 访问公钥库的密码
     */
    @Value("${license.storePass}")
    private String storePass;

    /**
     * 证书生成路径
     */
    private String licensePath = System.getProperty("user.dir") + "/license.lic";

    /**
     * 密钥库存储路径
     */
    private String publicKeysStorePath = System.getProperty("user.dir") + "/publicCerts.keystore";;


    @Override
    public void run(ApplicationArguments args) throws Exception {
        if (StringUtils.hasText(licensePath)) {
            log.info("++++++++ 开始安装证书 ++++++++");

            LicenseVerifyParam param = new LicenseVerifyParam();
            param.setSubject(subject);
            param.setPublicAlias(publicAlias);
            param.setStorePass(storePass);
            param.setLicensePath(licensePath);
            param.setPublicKeysStorePath(publicKeysStorePath);
            LicenseVerify licenseVerify = new LicenseVerify();
            //安装证书
            licenseVerify.install(param);

            log.info("++++++++ 证书安装结束 ++++++++");
        }

    }
}
